/**
 * 图片数据验证中间件
 * 用于验证和清理商品图片数据
 */

/**
 * 验证和清理商品图片数据
 */
exports.validateProductImages = (req, res, next) => {
  try {
    const { images, mainImage } = req.body;

    // 处理images数组
    if (images && Array.isArray(images)) {
      const validImages = [];
      
      for (const image of images) {
        if (!image || typeof image !== 'string') {
          continue; // 跳过空值或非字符串
        }

        // 检查是否是base64数据
        if (image.startsWith('data:image/')) {
          console.warn('检测到base64图片数据，已过滤:', image.substring(0, 50) + '...');
          continue; // 跳过base64数据
        }

        // 检查是否是有效的HTTP URL
        if (image.startsWith('http://') || image.startsWith('https://')) {
          validImages.push(image);
        } else if (image.startsWith('/uploads/')) {
          // 相对路径，转换为完整URL
          const baseUrl = `${req.protocol}://${req.get('host')}`;
          const fullUrl = `${baseUrl}${image}`;
          validImages.push(fullUrl);
        } else {
          console.warn('无效的图片格式:', image.substring(0, 50) + '...');
        }
      }

      // 更新请求体中的images数组
      req.body.images = validImages;

      // 自动设置mainImage
      if (validImages.length > 0) {
        // 如果没有设置mainImage，或者mainImage无效，使用第一张有效图片
        if (!mainImage || 
            mainImage === 'undefined' || 
            mainImage.startsWith('data:image/') ||
            mainImage.includes('placeholder.com') ||
            !validImages.includes(mainImage)) {
          req.body.mainImage = validImages[0];
        }
      } else {
        // 如果没有有效图片，清空mainImage
        req.body.mainImage = null;
      }
    }

    next();
  } catch (error) {
    console.error('图片验证中间件错误:', error);
    next(error);
  }
};

/**
 * 验证单个图片URL
 */
exports.validateImageUrl = (imageUrl) => {
  if (!imageUrl || typeof imageUrl !== 'string') {
    return false;
  }

  // 检查是否是base64数据
  if (imageUrl.startsWith('data:image/')) {
    return false;
  }

  // 检查是否是有效的HTTP URL
  if (imageUrl.startsWith('http://') || imageUrl.startsWith('https://')) {
    return true;
  }

  // 检查是否是相对路径
  if (imageUrl.startsWith('/uploads/')) {
    return true;
  }

  return false;
};

/**
 * 清理图片数组，移除无效图片
 */
exports.cleanImageArray = (images, baseUrl = '') => {
  if (!Array.isArray(images)) {
    return [];
  }

  const validImages = [];
  
  for (const image of images) {
    if (!image || typeof image !== 'string') {
      continue;
    }

    // 跳过base64数据
    if (image.startsWith('data:image/')) {
      continue;
    }

    // 有效的HTTP URL
    if (image.startsWith('http://') || image.startsWith('https://')) {
      validImages.push(image);
    } else if (image.startsWith('/uploads/') && baseUrl) {
      // 相对路径转换为完整URL
      validImages.push(`${baseUrl}${image}`);
    }
  }

  return validImages;
};
